package org.yeyu.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.Collections;
import java.util.List;

/**
 * 搜索结果类
 * 包含匹配的工作表名称、行号、行数据、匹配列索引和表头信息
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SearchResult {
    private static final Logger logger = LogManager.getLogger(SearchResult.class);

    private String sheetName;
    private int rowNum;
    private List<String> rowData;
    private List<Integer> matchedColumnIndices;
    private List<String> headers;

    /**
     * 获取不可变的行数据列表
     * @return 不可变的行数据列表
     */
    public List<String> getRowData() {
        return rowData == null ? Collections.emptyList() : Collections.unmodifiableList(rowData);
    }

    /**
     * 获取不可变的匹配列索引列表
     * @return 不可变的匹配列索引列表
     */
    public List<Integer> getMatchedColumnIndices() {
        return matchedColumnIndices == null ? Collections.emptyList() : Collections.unmodifiableList(matchedColumnIndices);
    }

    /**
     * 获取不可变的表头列表
     * @return 不可变的表头列表
     */
    public List<String> getHeaders() {
        return headers == null ? Collections.emptyList() : Collections.unmodifiableList(headers);
    }

    /**
     * 验证搜索结果的完整性
     * @return 如果结果有效返回true，否则返回false
     */
    public boolean isValid() {
        return sheetName != null && !sheetName.trim().isEmpty() && 
               rowNum > 0 && 
               (matchedColumnIndices == null || !matchedColumnIndices.isEmpty());
    }
}
